package cn.rcth.base.serivce;

import cn.rcth.base.VO.OrderVO;
import cn.rcth.base.domain.Order;
import cn.rcth.base.msg.ResultMsg;

import java.util.List;
import java.util.Map;

public interface IOrderSerivce {
    /**
     * 创建订单
     */
    ResultMsg orderCreate(OrderVO orderVO , String spbill_create_ip) throws Exception;

    /**
     * 查询订单内容
     * @orderVO 订单 内容
     * @return 订单内容
     */
    Map orderConfirm(OrderVO orderVO);

    /**
     * 查询当前用户的订单
     * @param userId 用户id
     * @return 订单
     */
    ResultMsg getUserOrder(Long userId,Integer orderStatus);

    /**
     * 查询当前订单
     * @param
     * @return
     */
    Order selectOrderById(Long orderId);

    /**
     * 根据订单号查询订单
     * @param sn  订单号
     * @return
     */
    Order selectOrderBySn(String sn);

    /**
     * 修改订单
     * @param order 订单
     */
    void updateOrder(Order order);

    /**
     * 取消订单
     * @param orderId
     */
    void cancelOder(Long orderId);


    /**
     * 查询订单详情
     * @param orderId  订单
     * @return  订单详情
     */
    ResultMsg queryOrderDetails(Long orderId);

    /**
     * 确认收货
      * @param orderId 订单id
     */
    void orderReceipt(Long orderId);

    /**
     * 再来一单
     * @param orderId 订单id
     */
    ResultMsg orderComeBackOneMore(Long orderId);

    /**
     * 根据用户id查询订单状态的条数
     * @param userId
     * @return
     */
    Map orderStatus(Long userId);

    /**
     * 查询所有订单
     */
    List<Order> selectAll();

    /**
     * 根据备注查询订单
     * @param text 备注(编号)
     * @return
     */
    List<Order> selectByText(String text);
}
